import type {
  EntityApi,
  EntityReq,
  EntityModel,
  EntityList,
  EntityTotal,
  EntityKey,
  EntityCreateReq,
  EntityUpdateReq,
  EntityExportReq,
  EntityImportReq,
} from "jmash-core";

// 地区信息接口
export interface DictRegionApi extends EntityApi {}

// 地区信息查询
export interface DictRegionReq extends EntityReq {
  // 地区名称
  likeRegionName?: string;
  // 是否启用
  enable?: boolean;
  // 是否包含启用禁用
  hasEnable?: boolean;
  // 父ID
  parentId?: string;
  // 隐藏ID
  excludeId?: string;
  // 是否有检索条件
  hasParent?: boolean;
  // 地区编码
  regionCode?: string
}

// 地区信息实体
export interface DictRegionModel extends EntityModel {
  //  地区ID
  regionId: string;
  //  父ID
  parentId?: string;
  //  地区编码
  regionCode: string;
  //  地区名称
  regionName?: string;
  //  地区拼音
  regionPinyin?: string;
  //  地区类型
  regionType?: string;
  //  省分类
  regionCategory?: string;
  //  深度
  depth: number;
  //  排序
  orderBy?: number;
  //  是否启用
  enable?: boolean;
  //  描述
  description?: string;
  // 是否包含子节点
  hasChildren?: boolean;
  // 子节点
  children?: DictRegionModel[];
}

//地区信息列表
export interface DictRegionList extends EntityList {
  // 内容
  results: Array<DictRegionModel>;
}

// 合计
export interface DictRegionModelTotal extends EntityTotal {
  // 总记录数
  totalSize: number;
}

// 地区信息主键
export interface DictRegionKey extends EntityKey {
  // 租户
  tenant?: string;
  regionId?: string;
}

// 地区信息新增实体
export interface DictRegionCreateReq extends EntityCreateReq {
  // 父ID
  parentId?: string;
  // 地区编码
  regionCode?: string;
  // 地区名称
  regionName?: string;
  // 地区拼音
  regionPinyin?: string;
  // 地区类型
  regionType?: string;
  // 地区分类
  regionCategory?: string;
  // 启用禁用
  enable?: boolean;
  // 描述
  description?: string;
}

// 地区信息修改实体
export interface DictRegionUpdateReq extends EntityUpdateReq {
  // 地区ID
  regionId?: string;
  // 父ID
  parentId?: string;
  // 地区编码
  regionCode?: string;
  // 地区名称
  regionName?: string;
  // 地区拼音
  regionPinyin?: string;
  // 地区类型
  regionType?: string;
  // 地区分类
  regionCategory?: string;
  // 启用禁用
  enable?: boolean;
  // 描述
  description?: string;
}

export type DictRegionFormReq = DictRegionCreateReq | DictRegionUpdateReq;

// 导出请求
export interface DictRegionExportReq extends EntityExportReq {
  // 筛选条件
  req: DictRegionReq;
}

// 导入请求
export interface DictRegionImportReq extends EntityImportReq {}

// 上移下移
export interface DictRegionMoveKey {
  // 租户
  tenant?: string;
  regionId?: string;
  up?: boolean;
}

// 启用/禁用
export interface DictRegionEnableKey {
  // 租户
  tenant?: string;
  regionId?: string;
  enable?: boolean;
}
